#!/bin/bash

# 检查参数数量
if [ "$#" -lt 2 ]; then
    echo "用法: $0 '<cron表达式>' '<命令>'"
    echo "示例: $0 '0 3 * * *' '/path/to/script.sh arg1 arg2'"
    exit 1
fi

cron_expr="$1"
full_command="$2"

# 提取命令的第一部分作为脚本路径
script_path=$(echo "$full_command" | awk '{print $1}')

# 验证 cron 表达式格式
if ! [[ "$cron_expr" =~ ^[0-9*,/\-]+[[:space:]]+[0-9*,/\-]+[[:space:]]+[0-9*,/\-]+[[:space:]]+[0-9*,/\-]+[[:space:]]+[0-9*,/\-]+$ ]]; then
    echo "错误: 无效的 cron 表达式格式"
    echo "正确格式: '分钟 小时 日 月 星期'"
    exit 1
fi

# 检查脚本是否存在
if [ ! -f "$script_path" ]; then
    echo "错误: 脚本 '$script_path' 不存在"
    exit 1
fi

# 确保脚本有可执行权限
if [ ! -x "$script_path" ]; then
    echo "为脚本添加可执行权限: $script_path"
    chmod +x "$script_path"
fi

# 创建临时文件
temp_file=$(mktemp)

# 清空现有 crontab 并添加新任务
echo "# Cron 任务由 add_cron_job.sh 于 $(date) 设置" > "$temp_file"
echo "$cron_expr $full_command" >> "$temp_file"

# 应用新的 crontab（当前用户）
crontab "$temp_file"
rm "$temp_file"

echo "已清空所有现有任务并成功添加新 cron 任务:"
echo "$cron_expr $full_command"
echo "用户: $(whoami)"

exit 0
